home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / parallax / more_exa.tar / more / X / xlife.p < prev    next >
Text File  |  1993-06-02  |  1KB  |  40 lines

  1. SYSTEM life;
  2. CONST ny    = 128;
  3.       nx    = 128;
  4.       black = COLOR(0,0,0);
  5.       white = COLOR(255,255,255);
  6.  
  7. CONFIGURATION field [0..ny-1],[0..nx-1];
  8. CONNECTION    l_r: field[i,j] -> field[(i-1) MOD ny, j].l_r,
  9.                                  field[(i+1) MOD ny, j].l_r;
  10.               u_d: field[i,j] -> field[i, (j+1) MOD nx].u_d,
  11.                                  field[i, (j-1) MOD nx].u_d;
  12.  
  13. SCALAR win : INTEGER;
  14. VECTOR val : BOOLEAN;
  15.        buf, anz, anzlr, abuf : INTEGER;
  16.  
  17. BEGIN
  18.    win := OpenAbsWindow(nx, ny);
  19.    PARALLEL
  20.       val := VBRandom(); (* random init *)
  21.       IF val THEN
  22.          SetColor(black); SetPixel(DIM1, DIM2);
  23.       END;
  24.       LOOP
  25.         PROPAGATE.l_r (ORD(val),buf) REDUCE.SUM;
  26.         anzlr := ORD(val) + buf;
  27.         PROPAGATE.u_d (anzlr,abuf) REDUCE.SUM;
  28.         anz := anzlr + abuf;
  29.         IF val THEN
  30.           IF (anz < 3) OR (anz > 4) THEN
  31.             val := FALSE; SetColor(white); SetPixel(DIM1,DIM2);
  32.           END
  33.         ELSIF anz = 3 THEN
  34.             val := TRUE;  SetColor(black); SetPixel(DIM1,DIM2);
  35.         END (* if *)
  36.       END (* loop *)
  37.    ENDPARALLEL
  38. END life.
  39.  
  40.